/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BeansGerenciaveis;

import DAO.AnaisDao;
import DAO.Conexao;
import bean.Anais;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author fernando
 */
@ManagedBean
@SessionScoped
public class AnaisBean {

    /**
     * Creates a new instance of AnaisBean
     */
    public AnaisBean() {
        this.analDao = new AnaisDao();
        this.anal = new Anais();
        
        

    }

    public void novoAnais() {
        this.analDao = new AnaisDao();
        this.anal = new Anais();
        this.carregarAnais();
    }

    public AnaisDao getAnalDao() {
        return analDao;
    }

    public void setAnalDao(AnaisDao AnalDao) {
        this.analDao = AnalDao;
    }

    public Anais getAnal() {
        return anal;
    }

    public void setAnal(Anais Anal) {
        this.anal = Anal;
    }

    public PreparedStatement getPs() {
        return ps;
    }

    public void setPs(PreparedStatement ps) {
        this.ps = ps;
    }

    public void setAnais(DataModel<Anais> Anais) {
        this.anais = Anais;
    }

    public boolean isSucesso() {
        return sucesso;
    }

    public void setSucesso(boolean sucesso) {
        this.sucesso = sucesso;
    }

    public Conexao getConexao() {
        return conexao;
    }
   
    public void setConexao(Conexao conexao) {
        this.conexao = conexao;
    }

    public ArrayList<Anais> getListaAnais() {
        if(listaAnais == null){
            this.carregarAnais();
        }
        return listaAnais;
    }

    public void setListaAnais(ArrayList<Anais> listaAnais) {
        this.listaAnais = listaAnais;
    }

    public String cadastroAnal() {
        String resultado = "/cadastros/acaoErro";

        analDao = new AnaisDao();

        System.out.println("Cadastro Anal - Executado");
        System.out.println(anal.getTitulo());


        sucesso = analDao.cadastrarAnais(anal);

        if (sucesso) {
            this.novoAnais();
            this.carregarAnais();
            return "/cadastros/obras/anais/cadastro/cadastroSucesso";
        }

        return resultado;
    }

    public void selecionar() {
        anal = anais.getRowData();
    }

    public DataModel<Anais> getAnais() {
        System.out.println("Anal Dao - getAnais: Fui executado!");
        if(this.anais == null){
            this.carregarAnais();
        }
        return anais;
    }

    //Método Necessário para retornar uma lista a ser mostrada no selectOneMenu da view de cadastro de autores!
    public List<Anais> listarAnais() {
        System.out.println("Anal Bean - Listar Anais: Fui executado!");
        analDao = new AnaisDao();
        listaAnais = analDao.listarAnais();
        return listaAnais;
    }

    public String removerAnal() {
        String resultado = "/cadastros/acaoErro";
        analDao = new AnaisDao();
        sucesso = analDao.removerAnais(anal);

        if (sucesso) {
            this.novoAnais();
            this.carregarAnais();
            return "/cadastros/acaoSucesso";
        }

        return resultado;
    }

    public String editarAnal() {
        String resultado = "/cadastros/acaoErro";

        analDao = new AnaisDao();
        sucesso = analDao.alterarAnais(anal);

        if (sucesso) {
            this.novoAnais();
            this.carregarAnais();
            resultado = "/cadastros/acaoSucesso";
        }

        return resultado;
    }

    public void carregarAnais() {
        analDao = new AnaisDao();
        listaAnais = analDao.listarAnais();
        anais = new ListDataModel<Anais>(listaAnais);
    }
    private AnaisDao analDao;
    private Anais anal;
    private PreparedStatement ps;
    private DataModel<Anais> anais;
    private boolean sucesso = false;
    private Conexao conexao;
    private ArrayList<Anais> listaAnais;
}
